﻿namespace DefaultNamespace
{
    
    /**
     * 在制作游戏时，有时可以在两个值之间进行线性插值。这是通过 Lerp 函数来完成的。线性插值会在两个给定值之间找到某个百分比的值。
     * 例如，我们可以在数字 3 和 5 之间按 50% 进行线性插值以得到数字 4。这是因为 4 是 3 和 5 之间距离的 50%。
     * 在 Unity 中，有多个 Lerp 函数可用于不同类型。对于我们刚才使用的示例，与之等效的将是 Mathf.Lerp 函数，如下所示：
     */
    public class LerpScript : MonoBehaviour
    {
        //1. Mathf.Lerp
        /**
         * Mathf.Lerp 函数接受 3 个 float 参数：一个 float 参数表示要进行插值的起始值，另一个 float 参数表示要进行插值的结束值，
         * 最后一个 float 参数表示要进行插值的距离。在此示例中，插值为 0.5，表示 50%。如果为 0，则函数将返回“from”值；如果为 1，则函数将返回“to”值。
         */
        float result = Mathf.Lerp (3f, 5f, 0.5f);
        // 在此示例中，result = 4
        
        
        /* 2.Vector3.Lerp
         * Lerp 函数的其他示例包括 Color.Lerp 和 Vector3.Lerp。这些函数的工作方式与 Mathf.Lerp 完全相同，
         * 但是“from”和“to”值分别为 Color 和 Vector3 类型。在每个示例中，第三个参数仍然是一个 float 参数，表示要插值的大小。
         * 这些函数的结果是找到一种颜色（两种给定颜色的某种混合）以及一个矢量（占两个给定矢量之间的百分比）
         */
        Vector3 from = new Vector3 (1f, 2f, 3f);
        Vector3 to = new Vector3 (5f, 6f, 7f);
        Vector3 result = Vector3.Lerp (from, to, 0.75f);
        // 此处 result = (4, 5, 6)
        
        
        /**
         * 3.Mathf.Lerp
         *
         * 关闭与帧相关函数，而是使用秒相关，
         */
        void Update ()
        {
            light.intensity = Mathf.Lerp(light.intensity, 8f, 0.5f * Time.deltaTime);
        }
    }
    
    
}